package br.edu.ufcg.p1.barzin.model;

import java.util.ArrayList;
import java.util.List;

import br.edu.ufcg.p1.barzin.R;

import com.google.gson.annotations.SerializedName;

public class Categoria implements Listavel {

	private Integer id;
	
	@SerializedName("categoria_mae_id")
	private Integer categoriaMaeId;

	private String nome;

	private List<Categoria> subcategorias = new ArrayList<Categoria>();
	private List<Item> itens = new ArrayList<Item>();

	public Categoria(Integer id, Integer categoriaMaeId, String nome,
			List<Categoria> subcategorias, List<Item> itens) {
		this.id = id;
		this.categoriaMaeId = categoriaMaeId;
		this.nome = nome;
		if (subcategorias != null) this.subcategorias = subcategorias;
		if (itens != null) this.itens = itens;
	}

	public int getId() {
		return id;
	}

//	@Override
	public String getNome() {
		return nome;
	}

	public List<Item> getItens() {
		return itens;
	}

	public List<Categoria> getSubcategorias() {
		return subcategorias;
	}

	public Integer getCategoriaMaeId() {
		return categoriaMaeId;
	}

	public void setCategoriaMaeId(Integer categoriaMaeId) {
		this.categoriaMaeId = categoriaMaeId;
	}

	public void setSubcategorias(List<Categoria> subcategorias) {
		this.subcategorias = subcategorias;
	}

	public void setItens(List<Item> itens) {
		this.itens = itens;
	}

	@Override
	public String toString() {
		return this.nome;
	}

//	@Override
	public int getLayout() {
		return R.layout.categoria_list_item;
	}

//	@Override
	public List<Listavel> getListaveis() {
		List<Listavel> l = new ArrayList<Listavel>();
		l.addAll(getSubcategorias());
		l.addAll(getItens());
		return l;
	}

	public List<Item> getTodosItens() {
		List<Item> i = new ArrayList<Item>(getItens());
		for (Categoria cat : getSubcategorias()) {
			i.addAll(cat.getTodosItens());
		}
		return i;
	}

}
